function testDTW1(T)
%Autor:Paula Sanz Leon
%leer archivo de licencia GPL de las funciones a las que llama este script
%Syntax: testDTW1(X);

%Esta funcion compara la matriz de entrada contra todos los templates
%usando DTW. 

%Cargar los templates

load('PATTERN1_10.mat', 'PATTERN');
P1 = PATTERN;
load('PATTERN2_10.mat', 'PATTERN');
P2 = PATTERN;
load('PATTERN3_10.mat', 'PATTERN');
P3 = PATTERN;
load('PATTERN4_10.mat', 'PATTERN');
P4 = PATTERN;
load('PATTERN5_10.mat', 'PATTERN');
P5 = PATTERN;
load('PATTERN6_10.mat', 'PATTERN');
P6 = PATTERN;
load('PATTERN7_10.mat', 'PATTERN');
P7 = PATTERN;
load('PATTERN8_10.mat', 'PATTERN');
P8 = PATTERN;
load('PATTERN9_10.mat', 'PATTERN');
P9 = PATTERN;
load('PATTERN10_10.mat', 'PATTERN');
P10 = PATTERN;
load('PATTERN11_10.mat', 'PATTERN');
P11 = PATTERN;
load('PATTERN12_10.mat', 'PATTERN');
P12 = PATTERN;

% Construye la matriz de puntajes 'local match' como la distancia de
% coseno entre las magnitudes de la FFT

SM1  = simmx(abs(T),abs(P1));
SM2  = simmx(abs(T),abs(P2));
SM3  = simmx(abs(T),abs(P3));
SM4  = simmx(abs(T),abs(P4));
SM5  = simmx(abs(T),abs(P5));
SM6  = simmx(abs(T),abs(P6));
SM7  = simmx(abs(T),abs(P7));
SM8  = simmx(abs(T),abs(P8));
SM9  = simmx(abs(T),abs(P9));
SM10  = simmx(abs(T),abs(P10));
SM11  = simmx(abs(T),abs(P11));
SM12  = simmx(abs(T),abs(P12));

% Visualizacion
% subplot(2,2,1);
%     imagesc(SM)
%     colormap(1-gray)
%     title('Valores de similitud entre las señales')

% En teoria se debe ver una linea oscura (valores similares) a lo largo de
% la diagonal

% Utiliza DTW para encontrar el camino de menor costo (distancia) entre las
% esquinas opuestas de la matriz de costos.

% Note that we use 1-SM because dp will find the *lowest* total cost


[p,q,A] = dp2(1-SM1);    %dp con condiciones de pendientes 
[m,n]= size(A);
C(1:m,1:n,1)=A;
[p,q,A] = dp2(1-SM2);    %dp con condiciones de pendientes 
[m,n]= size(A);
C(1:m,1:n,2)=A;
[p,q,A] = dp2(1-SM3);    %dp con condiciones de pendientes 
[m,n]= size(A);
C(1:m,1:n,3)=A;
[p,q,A] = dp2(1-SM4);    %dp con condiciones de pendientes 
[m,n]= size(A);
C(1:m,1:n,4)=A;
[p,q,A] = dp2(1-SM5);    %dp con condiciones de pendientes 
[m,n]= size(A);
C(1:m,1:n,5)=A;
[p,q,A] = dp2(1-SM6);    %dp con condiciones de pendientes 
[m,n]= size(A);
C(1:m,1:n,6)=A;
[p,q,A] = dp2(1-SM7);    %dp con condiciones de pendientes 
[m,n]= size(A);
C(1:m,1:n,7)=A;
[p,q,A] = dp2(1-SM8);    %dp con condiciones de pendientes 
[m,n]= size(A);
C(1:m,1:n,8)=A;
[p,q,A] = dp2(1-SM9);    %dp con condiciones de pendientes 
[m,n]= size(A);
C(1:m,1:n,9)=A;
[p,q,A] = dp2(1-SM10);    %dp con condiciones de pendientes 
[m,n]= size(A);
C(1:m,1:n,10)=A;
[p,q,A] = dp2(1-SM11);    %dp con condiciones de pendientes 
[m,n]= size(A);
C(1:m,1:n,11)=A;
[p,q,A] = dp2(1-SM12);    %dp con condiciones de pendientes 
[m,n]= size(A);
C(1:m,1:n,12)=A;


% % Superponer el camino sobre la matriz de similitud local
% hold on; 
% plot(q,p,'r'); 
% hold off

% Deberia observarse como sigue el camino de la linea oscura

% subplot(2,2,2);
%  imagesc(C)
%  hold on; plot(q,p,'r'); hold off
%  title('Imagen del camino DTW')
 
% Bottom right corner of C gives cost of minimum-cost alignment of the two
for i=1:12
    
c(i)  =   C(size(C,1),size(C,2),i);

end

% subplot(2,2,3);
%    imagesc(SM2)
%    colormap(1-gray)
%    title('Valores de similitud entre las señales')
% 
% [p,q,C] = dp2(1-SM2);
% 
% hold on; 
% plot(q,p,'r'); 
% hold off
% 
% subplot(2,2,4);
%     imagesc(C)
%     hold on; plot(q,p,'r'); hold off
%     title('Imagen del camino DTW')
    
    
% c2  =   C(size(C,1),size(C,2));
 
 c
 
 
 

 % Este es el valor que se compara entre distintos templates cuando se esta
 % clasificando o reconociendo
